package P2;

public class ReadCharacterState extends ControlPanelState {
    @Override
    public void enterPassword(ControlPanel context, String inputPassword) {
        if (context.isLocked()) {
            // 控制面板被锁定
            long currentTime = System.currentTimeMillis() / 1000;
            if (currentTime >= context.getLockEndTime()) {
                // 解锁
                context.unlock();
                context.setAttempts(0);
                System.out.println("控制面板已解锁，请输入密码：");
            } else {
                long remainingTime = context.getLockEndTime() - currentTime;
                System.out.println("控制面板已锁定，请等待 " + remainingTime + " 秒后再次尝试。");
            }
        } else {
            // 未锁定，验证密码
            if (inputPassword.equals(context.getPassword())) {
                System.out.println("密码正确，控制面板进入系统功能选择状态。");
                context.changeState(new PasswordCorrectState());
                // 进入系统功能选择状态的逻辑
            } else {
                context.incrementAttempts();
                if (context.getAttempts() >= context.getMaxAttempts()) {
                    // 达到最大尝试次数，锁定
                    context.lock();
                    context.setLockEndTime((System.currentTimeMillis() / 1000) + context.getLockoutTime());
                    System.out.println("密码错误3次，控制面板已锁定，请等待 " + context.getLockoutTime() + " 秒后再次尝试。");
                } else {
                    System.out.println("密码错误，还剩 " + (context.getMaxAttempts() - context.getAttempts()) + " 次尝试机会。");
                }
            }
        }
    }
}

